package com.atguigu01.string;

import org.junit.Test;

/**
 * ClassName: StringMethodTest1
 * Package: com.atguigu01.string
 * Description:
 * (1)boolean isEmpty():字符串是否为空
 * (2)int length():返回字符串的长度
 * (3)String concat(xx):拼接
 * (4)boolean equals(0bject obj):比较字符串是否相等，区分大小写
 * (5)boolean equalsIgnoreCase(0bject obj):比较字符串是否相等，不区分大小写
 * (6)int compareTo(String other):比较字符串大小，区分大小写，按照Unicode编码值比较大小
 * (7)int compareTolgnoreCase(String other):比较字符串大小，不区分大小写
 * (8)String toLowerCase():将字符串中大写字母转为小写
 * (9)String toUpperCase():将字符串中小写字母转为大写
 * (10)String trim():去掉字符串前后空白符
 * (11)public String intern():结果在常量池中共享
 *
 * @Author ZY
 * @Create 16:33
 * @Version 1.0
 */
public class StringMethodTest1 {
    @Test
    public void test1(){
        String s1 = "";
        String s2 = new String();
        String s3 = new String("");

        System.out.println(s1.isEmpty());// true
        System.out.println(s2.isEmpty());// true
        System.out.println(s3.isEmpty());// true

        String s4 = null;
//        System.out.println(s4.isEmpty());//空指针异常

        String s5 = "hello";
        System.out.println(s5.length());//5
    }

    @Test
    public void test2(){
        String s1 = "hello";
        String s2 = "hello";
        System.out.println(s1.concat(s2));
        System.out.println(s1.equals(s2));
        System.out.println(s1.equalsIgnoreCase(s2));

        String s3 = "abcd";
        String s4 = "adef";
        System.out.println(s3.compareTo(s4));//-2

        String s5 = "abcd";
        String s6 = "abcd";
        System.out.println(s5.compareTo(s6));//0

        String s7 = "abcd";
        String s8 = "abcD";
        System.out.println(s7.compareTo(s8));//32

        String s9 = "  he ll  o ";
        System.out.println("/" + s9.trim() + "/");
    }

    /**
     * (11)boolean contains(xx):是否包含xx
     * (12)int indexof(xx):从前往后找当前字符串中xx，即如果有返回第一次出现的下标，要是没有返回-1
     * (13)int indexOf(string st,int fromindex):返回指定子字符串在此字符串中第一次出现处的索引，从指定的索引开始
     * (14)int lastlndexof(xx):从后往前找当前字符串中xx，即如果有返回最后一次出现的下标，要是没有返回-1
     * (15)int lastindexof(string st,int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引，从指定的索引开始反向搜索。
     */

    @Test
    public void test3(){
        String s1 = "hellohello";
        System.out.println(s1.contains("oe"));// false
        System.out.println(s1.contains("oh"));// true

        System.out.println(s1.indexOf("l"));//2
        System.out.println(s1.indexOf("l",5));
        System.out.println(s1.lastIndexOf("l"));
        System.out.println(s1.lastIndexOf("l",5));
    }

    /**
     * (16)String substring(int beginndex):返回一个新的字符串，它是此字符串的从beginindex开始截取到最后的一
     * (17)string substring(int beginindex,int endIndex):返回一个新字符串，它是此字符串从beginindex开始截取到子字符串。endindex(不包含)的
     */

    @Test
    public void test4(){
        String s1 = "HelloWorld";
        System.out.println(s1.substring(2));
        System.out.println(s1.substring(5,10));//[2,5)
    }

    /**
     * (18)char charAt(index):返回[index]位置的字符
     * (19)char[] toCharArray(): 将此字符串转换为一个新的字符数组返回
     * (20)static String value0f(char[]data):返回指定数组中表示该字符序列的 String
     * (21)static String value0f(charl] data, int offset, int count): 返回指定数组中表示该字符序列的 String
     * (22)static string copyValue0f(char[] data): 返回指定数组中表示该字符序列的 string
     * (23)static string copyvalueOf(charl data, int ofset,int count):返回指定数组中表示该字符序列的 string
     */

    @Test
    public void test5(){
        String s1 = "HelloWorld";
        System.out.println(s1.charAt(2));// l

        String s2 = String.valueOf(new char[]{'a','b','c'});
        String s3 = String.copyValueOf(new char[]{'a','b','c'});
        System.out.println(s2);
        System.out.println(s3);
        System.out.println(s2 == s3);


    }

}
